最開心又快速的打包方就是使用pyinstaller,如果是從官方網站直接下載及安裝python就不會遇到這些坑
pyinstaller 參數
--onefile 獨立執行檔
--onedir 做出的執行檔及附加檔案放在同一個目錄內
--tk 做出包含tk(tkinter)的檔案
--windowed 做出GUI程式(不含背景文字視窗畫面)
--console 做出Console 程式
--upx 使用upx 為程式加殼處理
--icon=<FILE.ICO> 添加程式圖標
--version=<FILE> 添加程式版本資料的資料文件
--name=<NAME> 指定專案名稱,若沒有指定,將使用程式名稱
快樂版
pyinstaller.py --onefile [source.py]
哭哭版
如果使用anaconda 3安裝後發現使用pyinstaller打包時會遇到套件遺失的路徑問題
問題: shiboken2 lib 遺失
解答: 直接在打包的參數中加入下面這行就行了
--paths "C:\Users\%UserName%\anaconda3\Lib\site-packages\shiboken2"
下圖是驗證這樣的寫法是可行的
結論:
anaconda 看似很方便,但其實裏頭的套件預設的放置位置是有別於python 官方下載的版本,所以還是建議使用官方的版本比較好
pyinstaller 還有一個超大的坑就是windows defender 會把打包出來的程式視為木馬程式或病毒,這是有辦法可以繞過防毒軟體的(筆者已經找到方法可以解),但可能就後續再分享了,因為那個原理實在太複雜,目前沒時間寫。
如果要上傳給雲端或給別人,建議使用winrar的壓縮方式,此舉可以繞過防毒軟體,不會將安裝檔判定為病毒。其他壓縮格式是會被判定成病毒的,執行的資料夾則是建議設定成白名單,這些都是比較簡單的做法。